//package com.tianyi.sfzy1.expception;
//
//import com.tianyi.sfzy1.util.R;
//import org.springframework.http.HttpStatus;
//import org.springframework.validation.FieldError;
//import org.springframework.web.bind.MethodArgumentNotValidException;
//import org.springframework.web.bind.annotation.ExceptionHandler;
//import org.springframework.web.bind.annotation.ResponseStatus;
//import org.springframework.web.bind.annotation.RestControllerAdvice;
//
//import java.util.HashMap;
//import java.util.Map;
//import java.util.Set;
//
//@RestControllerAdvice
//public class GlobalExceptionHandler {
//
//
//    // 处理自定义业务异常（假设已定义）
//    @ExceptionHandler(CustomBusinessException.class)
//    @ResponseStatus(HttpStatus.BAD_REQUEST)
//    public R handleCustomBusinessException(CustomBusinessException e) {
//        return R.fail(e.getMessage());
//    }
//
//    // 处理数据验证失败的异常
//    @ExceptionHandler(MethodArgumentNotValidException.class)
//    @ResponseStatus(HttpStatus.BAD_REQUEST)
//    public R handleValidationExceptions(MethodArgumentNotValidException ex) {
//        Map<String, String> errors = new HashMap<>();
//        ex.getBindingResult().getAllErrors().forEach((error) -> {
//            String fieldName = ((FieldError) error).getField();
//            String errorMessage = error.getDefaultMessage();
//            errors.put(fieldName, errorMessage);
//        });
//        return R.failWithErrors(errors);
//    }
//
//    // 处理约束违反异常（如@Pattern验证失败）
//    @ExceptionHandler(ConstraintViolationException.class)
//    @ResponseStatus(HttpStatus.BAD_REQUEST)
//    public R handleConstraintViolationExceptions(ConstraintViolationException ex) {
//        Map<String, String> errors = new HashMap<>();
//        Set<ConstraintViolation<?>> violations = ex.getConstraintViolations();
//        for (ConstraintViolation<?> violation : violations) {
//            errors.put(violation.getPropertyPath().toString(), violation.getMessage());
//        }
//        return R.failWithErrors(errors);
//    }
//
//    // 处理其他未处理的异常
//    @ExceptionHandler(Exception.class)
//    @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
//    public R handleException(Exception e) {
//        return R.error("系统异常，请联系管理员");
//    }
//}
